import numpy as np
import pandas as pd
from matplotlib import pyplot as plt

# 从csv导入数据， AQI也算一个维度 ------------------

# 距离公式

# 计算距离

# 数据可视化

#

'''X 是输入数据，一个大小为 (N, D) 的 NumPy 数组；
K 是要分成的簇的数量；
max_iters 是算法的最大迭代次数；
centroids 是当前质心的集合，大小为 (K, D)。
该函数返回两个数组：C 包含每个输入数据点所属的簇的索引，centroids 为最终的质心位置。

请注意，这只是一个简单的示例。实际应用中可能需要对此代码进行修改以正确处理各种边界情况。'''


def kmeans(X, max_iters, K=6):
    """

    :param X: 是输入数据，一个大小为 (N, D) 的 NumPy 数组；
    :param K: 要分成的簇的数量；
    :param max_iters: 是算法的最大迭代次数；
    :return:
    """
    centroids = X[np.random.choice(range(len(X)), K)]
    for i in range(max_iters):
        C = []
        for x in X:
            distances = [np.linalg.norm(x - c) for c in centroids]
            cluster = np.argmin(distances)
            C.append(cluster)
        centroids = [X[C == k].mean(axis=0) for k in range(K)]
    return np.array(C), np.array(centroids)
